The development of the EDVAC computer system of 1948 is often cited as the beginning of the computer era. Since that time, computer systems have evolved into extremely sophisticated devices, and computer systems may be found in many different settings. Computer systems typically include a combination of hardware (such as semiconductors, integrated circuits, programmable logic devices, programmable gate arrays, and circuit boards) and software, also known as computer programs. Years ago, computers were isolated devices that did not communicate with each other. But, today computers are often connected in networks, such as the Internet or World Wide Web, and a user at one computer, often called a client, may wish to access information at multiple other computers, often called target servers, via a network.
Various techniques are currently used for communicating between clients and servers. One such technique is called PPP (Point-to-Point Protocol), which is defined in RFC (Request for Comments) 1661. PPP defines an encapsulation mechanism for transporting multi-protocol packets across layer 2 (L2) point-to-point links. Typically, a user obtains an L2 connection to a Network Access Server (NAS) using one of a number of techniques, such as dialup POTS (Plain Old Telephone Service), ISDN (Integrated Services Digital Network), or ADSL (Asymmetric Digital Subscriber Line). Then, the user runs PPP over that connection. In such a configuration, the L2 termination point and PPP session endpoint reside on the same physical device, i.e., the NAS.
Another technique for communicating between clients and servers is called L2TP (Layer 2 Tunneling Protocol), which is defined in RFC 2661 and is hereby incorporated by reference. L2TP extends the PPP model by allowing the L2 and PPP endpoints to reside on different devices interconnected via a packet-switched network. With L2TP, a user has an L2 connection to an access concentrator (e.g., a modem bank, ADSL, or DSLAM (Digital Subscriber Line Access Module)), and the concentrator then tunnels individual PPP frames to the NAS. This allows the actual processing of PPP packets to be divorced from the termination of the L2 circuit.
A technique for routing client requests to target servers using L2TP is called compulsory tunneling, in which a particular client user id (identification) is routed via a L2TP tunnel after partial identification. For example, an ISP (Internet Service Provider) is connected to a LAN (Local Area Network), which is connected to a particular target server. A variation of compulsory tunneling is called multihop, in which tunnels are chained together after a partial authentication. For example, a client may be connected to the Internet, which is connected to a router, and then the router is connected to a LAN, which is connected to the target server.
The main disadvantage of the compulsory tunneling and multihop techniques is that they require static configuration on the ISP, firewall, or router that connects the client to the target server. They also require partial authentication, which involves the following steps. First, the client and the ISP, firewall, or router exchange negotiations (e.g., PPP LCP (Link Control Protocol) negotiations) up to an authentication stage. Second, the ISP, firewall, or router uses the authentication information with some external configuration information to choose a target server. Third, the ISP, firewall, or router starts the next part of the route. Finally, the negotiation may need to restart from the beginning between the client and the target server. Unfortunately, partial identification increases the chance of retry/timeout failures under heavy load, which degrades network performance.
The compulsory tunneling and multihop techniques described above also present challenges when a target server is down or overloaded and traffic needs to be re-routed to a different target server. Current techniques for attempting to address these challenges, and the limitations of these techniques include the following.
In a first technique, the ISP, firewall, or router is reconfigured to route requests to different servers when a particular target server is down or the network configuration changes. Unfortunately, reconfiguration requires manual intervention by a system administrator, which can causes significant delays while the system administrator diagnoses and addresses the problem.
In a second technique, the ISP, firewall, or router looks up the target server by name via DNS (Domain Name System) and receives a list of addresses pointing to different servers. This technique requires special software on the ISP, firewall, or router to take advantage of this list for load balancing of client requests among the target servers. Alternatively, the ISP, firewall, or router can look up the target server every time it needs to route a new connection and the DNS can round robin the first IP address to load balance among the target services. Unfortunately, this technique generates extra traffic on the network and does not handle the target server being down or otherwise inoperative.
In a third technique, when a target server goes down, a second server takes over the IP (Internet Protocol) address of the target server. Unfortunately, this technique does not help with load balancing of requests among target servers. When requests are not properly load balanced among the target servers, a subset of the target servers receives a disproportionate number of requests to the exclusion of other target servers, which results in the subset being a bottleneck to performance while the other target servers are underutilized and their performance capacity is wasted.
In a fourth technique, called dynamic DNS, the DNS is updated when a server is down due to route traffic to a new target server, which requires additional software and does not help resolve load balancing problems.
Without a better technique for routing incoming client requests to target servers, client requests will continue to suffer from degraded performance and target servers will continue to suffer from poor load balancing.